<html>
<head>
	<meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type">
	<meta content="J. Mark Shacklette" name="Author">
	<meta content="Mozilla/4.79 [en] (X11; U; Linux 2.4.18-3 i686) [Netscape]" name="GENERATOR">
	<title>University of Chicago CSPP 51081 Course Resources</title>
</head>

<body alink="#ff0000" bgcolor="#bfbfbf" link="#0000ff" text="#000000" vlink="#ff00ff">

	<center>
	<img src="../cs-logo.gif" height="137" width="316"><br>
	<br>
	<b>The University of Chicago</b><br>
	<b>Department of Computer Science</b><br>
	<br>
	<b>CSPP 51081 Resource Guide</b><br>
	<b>Fall 2010</b><br>
	<br>
	<b><font size="+1">Unix Systems Programming</font></b><br>
	</center>

<table cellspacing="10" width="75%">
	<tr>
		<td colspan=2><hr></td>
	</tr>
	<tr>
		<td colspan=2>
		<table cellspacing=2>
		<tr>
		<td><a href="#required">Required Texts</a></td>
		<td><a href="#recommended">Recommended Texts</a></td>
		<td><a href="#online">Online Resources</a></td>
		<td><a href="links/">Links Page</a></td>
		<td><a href="#supplemental">Supplemental Reading</a></td>
		</tr>
		</table>
		</td>
	</tr>

	<tr>
		<td colspan=2><a name="required"><hr></td>
	</tr>

	<tr><td colspan=2><u><b>Required Texts</b></u></td>
	</tr>
	<tr>
	<td colspan=2>
	You should acquire the latest (i.e., currently published) editions of the following:<br>
	</td>
	</tr>
	<tr>
		<td valign=top>1.</td><td>Advanced Programming in the UNIX(R) Environment, Richard Stevens, Addison-Wesley, ISBN: 0201563177 <br>
		(2 copies on Ready Reserve in Eckhart)</td>
		</tr>
		<tr>
		<td valign=top>2.</td><td>Effective awk Programming, 3rd ed., Arnold Robbins<br>
		available online at: <a href="http://www.gnu.org/software/gawk/manual/gawk.html">http://www.gnu.org/software/gawk/manual/gawk.html</a></td>
		</tr>
	<tr>
	<td colspan=2>AND Choose ONE of the following:<br>
	</tr>
	<tr>
		<td valign=top>3.a.</td><td>If you are a total newbie to Unix and Unix C programming (i.e., a beginner with minimal hands-on experience):<br>
		<br>
		Beginning Linux Programming, 2nd Ed., Matthew &amp; Stones, Wrox Press, ISBN:&nbsp; 1861002971<br>
		(2 copies on Ready Reserve in Eckhart)
		</td>
	</tr>
	<tr>
		<td valign=top>3.b</td><td>If you already have a little hands-on experience with C programming (this should be most students)<br>
		<br>
		Understanding Unix/Linux Programming: A Guide to Theory and Practice, Molay, Prentice Hall, ISBN:&nbsp; 0130083968<br>
		(1 copy on Ready Reserve in Eckhart)
		</td>
	</tr>
	<tr>
		<td valign=top>3.c.</td><td>If you already have substantial experience with both Unix and C programming use<br>
		<br>
		UNIX Systems Programming, Curry, O'Reilly, ISBN:&nbsp; 1565921631
		</td>
	</tr>
	<tr>
		<td colspan=2>If you choose 3.a or 3.c these texts are highly recommended.</td>
	</tr>
	<tr>
		<td valign=top>4.</td><td>UNIX Network Programming, Volume 1: Networking APIs - Sockets and XTI (2nd Edition), Richard Stevens, Prentice Hall, ISBN: 013490012X<br> 
		(2 copies on Ready Reserve in Eckhart)<br>
		</td>
	</tr>
	<tr>
		<td valign=top>5.</td><td>Programming with POSIX Threads, Butenhof, Addison-Wesley, ISBN:&nbsp; 0201633922<br>
		(2 copies on Ready Reserve in Eckhart)<br></td>
	</tr>



<tr>
<td colspan=2><a name="recommended"><hr></td>
</tr>
<tr>
<td colspan=2><u><b>Recommended Texts</b></u></td>
</tr>
<tr>
<td valign=top>C Language Instruction:</td>
<td>
<p>If you are new to C and need a good and substantive introduction to
the language, we recommend either of: </p>
<p><b><i>Introductory C</i></b>, Petersen; Morgan Kaufmann Publishers;
ISBN: 0125521421 ; 2nd edition (January 15, 1997) </p>
<p><b><i>C Programming:&nbsp; A Modern Approach</i></b>, King; W.W.
Norton &amp; Company; ISBN: 0393969452 ; (April 1996) <br>
</td>
</tr>
<tr>
<td valign=top>General Unix C Programming:</td>
<td>
<p><b><i>Managing Projects with Make</i></b> , Andy Oram and Steve Talbott, O'Reilly, 1991 </p>
<p><b><i>Unix Systems Programming with SVR 4</i></b>, David Curry, O'Reilly,&nbsp;&nbsp; 1996 </p>
<p><b><i>Linux Socket Programming By Example</i></b>, Warren Gay </p>
<p><b><i>Pthreads Programming</i></b>, Nichols et. al, O'Reilly, 1996 </p>
<p><b><i>The Unix Programming Environment</i></b>, Kernighan &amp; Pike, Prentice Hall, 1984 </p>
<p><b><i>Advanced Unix Programming</i></b>, Rochkind, Prentice Hall, 1985 </p>
<p><b><i>Interprocess Communications in UNIX:&nbsp; The Nooks &amp; Crannies</i></b> , Gray, Prentice Hall, 1988 </p>
<p><b><i>Unix Distributed Programming</i></b>, Brown, Prentice Hall, 1994 </p>
<p><b><i>Power Programming with RPC</i></b>, Bloomer, O'Reilly, 1992 </p>
<p><b><i>Using C on the UNIX System</i></b>, Curry, O'Reilly, 1989 </p>
<p><a href="http://www.gnu.org/manual/manual.html">GNU Online Documentation for make, gcc, gdb, etc.</a> </p>
</td>
</tr>
<tr>
<td valign=top>General Unix:</td>
<td>
<p><b><i>Learning the UNIX Operating System , 4<sup>th</sup> Edition</i></b> , Peek, et. al., Orielly, 1997 </p>
<p><b><i>A Practical Guide to Linux</i></b> , Mark Sobell, Addison-Wesley, 1997 </p>
<p><b><i>Portable Shell Programming</i></b> , Bruce Blinn, Prentice Hall, 1996 </p>
<p><b><i>UNIX Power Tools</i></b>, Peek et. al., O'Reilly, 1993 </p> 
<p><b><i>Learning the Bash Shell, 2nd. Ed.</i></b>, Newham &amp; Rosenblatt, O'Reilly, 1998 <br>
</td>
</tr>
<tr>
<td valign=top>Sed &amp; Awk &amp; Regular Expressions:</td>
<td>
<p><b><i>Unix Awk and Sed Programmer's Interactive Workbook</i></b>, Peter Patsis, Prentice Hall, 1999 </p>
<p><b><i>Mastering Regular Expressions</i></b> , Jeffrey E. F. Friedl, O'Reilly, 1997 </p>
<p><b><i>sed &amp; awk</i></b> , Dale Dougherty, O'Reilly, 1990 </p>
<p><b><i>The AWK Programming Language</i></b> , Aho, Kernighan, Weinberger, Addison-Wesley, 1988 <br>
</td>
</tr>
<tr>
<td valign=top>General Operating Systems:</td>
<td>
<p><b><i>Modern Operating Systems, 2nd. Ed.</i></b>, Tanenbaum, Prentice Hall, 2001 </p>
<p><b><i>Operating System Concepts</i>, 5th Ed.</b>, Silberschatz &amp; Galvin, Addison-Wesley, 1998 </p>
<p><b><i>UNIX Internals:&nbsp; The New Frontiers</i></b>, Vahalia, Prentice Hall, 1996 </p>
<p><b><i>UNIX Internals:&nbsp; A Practical Approach</i></b>, Pate, Addison-Wesley, 1996 <br>
<p><b><i>The Unix Philosophy</i></b>, Gancarz <br>
</td>
</tr>


<tr>
<td colspan=2><a name="online"><hr></td>
</tr>
<tr>
<td colspan=2><u><b>Online Reference and Resources</b></u></td>
</tr>
<tr>
<td valign=top>General:</td>
<td>

<p><a href="http://www.sharefile.com/content/common-unix-commands.aspx">Common Unix Commands</a> </p>




<p><a href="http://heather.cs.ucdavis.edu/%7Ematloff/unix.html">Norman
Matloff's Unix Tutoral Center</a> </p>




<p><a href="http://www-128.ibm.com/developerworks/">
IBM Developerworks Library</a> </p>




<p><a href="http://www.technion.ac.il/guides/unix.html">The
Unix Reference Desk</a>
</p>




<p><a href="http://www.cse.buffalo.edu/%7Emilun/unix.programming.html">Davin's
collection of unix programming links</a> </p>




<!--<p><a href="http://wwwhost.cc.utexas.edu/cc/services/unix/index.html">UTexas
Unix site</a> </p>-->
<p><a href="http://www.ugu.com/">Unix Guru Universe</a> </p>




<!--<p><a
 href="http://www.cis.ohio-state.edu/hypertext/faq/usenet/unix-faq/faq/contents/faq.html">
The Unix FAQ</a> </p>-->
<p><a href="http://www.faqs.org/faqs/unix-faq/faq/">Unix FAQ Index at
faqs.org</a> </p>




<p><a href="http://cslibrary.stanford.edu/">Stanford CS Education
Library (C tutorials, programmer tools pdf, pointer references, fun
with
Binky, et. al.)</a> </p>




<!--<p><a href="http://www.cit.ac.nz/smac/os202/default.htm">Online Unix
Course</a> </p>-->
<!--<p><a
 href="http://www.google.com/search?q=cache:_df8bVMVQlo:www.byte.com/art/9410/sec8/art3.htm">
History of Unix by Peter Salus</a> </p>-->
<p><a href="http://uwsg.iu.edu/usail/external/recommended/unixhx.html">History
of Unix by Mike Loukides</a> </p>




<p><a href="http://cm.bell-labs.com/cm/cs/who/dmr/hist.html">History of
Unix by Dennis Ritchie</a> </p>




<!--<p><a href="http://wwwwbs.cs.tu-berlin.de/%7Ekraxel/gnuinfo/">GNU
Documentation</a> </p>-->
<p><a href="http://www.gnu.org/software/ddd/">DDD Debugger</a> </p>




<p><a href="http://www.gnu.org/software/libc/manual/">
glibc Manual</a> </p>




<!--<p><a href="http://www.ee.mu.oz.au/linux/programming/">Linux
Programmer's Bouncepoint</a> </p>-->

	</td>
	</tr>
	<tr>
	<td valign=top>Regular Expressions:</td>
	<td>




<p><a href="http://py-howto.sourceforge.net/regex/regex.html">Regular
Expression HOWTO</a> </p>




<!--<p><a href="http://sitescooper.org/tao_regexps.html">A Tao of Regular
Expressions</a> </p>-->
<p><a href="http://www.opengroup.org/onlinepubs/007908799/xbd/re.html">Single
UNIX Specification:&nbsp; Regular Expressions</a> </p>




<p>&nbsp;<a href="http://etext.lib.virginia.edu/helpsheets/regex.html">Steve
Ramsay's Guide to Regular Expressions</a> </p>



</td>
</tr>
<tr>
<td valign=top>Awk:</td>
<td>




<p><a href="http://www.softpanorama.org/Tools/awk.shtml">How
to Get Things Done With Awk</a> </p>




<p><a href="http://www.udel.edu/johnmack/frec682/682awk.html">Awk
Filters</a> </p>

</td>
</tr>
<tr>
<td valign=top>C Programming: </td>
<td>



<p><a href="http://www.geocities.com/capitalware/unix_faq_toc.html">Unix
C Programming FAQ</a> </p>




<p><a href="http://www.cs.cf.ac.uk/Dave/C/CE.html">A. D. Marshall's
Programming in C:&nbsp; UNIX System Calls and Subroutines using C</a> </p>




<p><a href="http://www.le.ac.uk/cc/tutorials/c/">Introduction
to C Programming</a> </p>




<p><a href="http://www.strath.ac.uk/CC/Courses/NewCcourse/ccourse.html">C
Programming on Unix Tutorial at University of Strathclyde</a> </p>




</td>
</tr>
<tr>
<td valign=top>POSIX Threads:</td>
<td>




<!--<p><a href="http://www.cs.ucr.edu/%7Esshah/pthreads/">Pthreads
Information</a> </p>-->
<p><a href="http://www.serpentine.com/%7Ebos/threads-faq">Threads FAQ</a>
</p>




<!--<p><a
 href="http://dis.cs.umass.edu/%7Ewagner/threads_html/tutorial.html">Threads
Tutorial at Amhurst</a> </p>-->
<p><a href="http://www.humanfactor.com/pthreads/">Programming Posix
Threads Bounce Point</a> <br>


</td>
</tr>
<tr>
<td colspan=2><a name="supplemental"><hr></td>
</tr>
<tr>
<td colspan=2><u><b>Supplemental Reading</b></u></td>
</tr>
<tr>
<td colspan=2>

(in no particular order)</p>


<p><i>Mastering Regular Expressions</i>, Jeffrey E. F. Friedl (O'Reilly
&amp; Assoc. 1997, ISBN: 1-56592-257-3). An thorough discussion of an
inexhaustible subject. </p>




<p><i>Learning the UNIX Operating System</i> , 4<sup>th</sup> Edition,
Jerry Peek, Grace Todino &amp; John Strang (Orielly &amp; Associates,
1997, ISBN: 1-56592-390-1) A virtual "Cliffs Notes" for the Unix
Operating System. </p>




<p><i>Using C on the UNIX System</i>, David A. Curry (O'Reilly &amp;
Assoc., 1985, ISBN: 0-937175-23-4). A good introduction to C
programming
on Unix. </p>




<p><i>Learning GNU Emacs</i>, Debra Cameron &amp; Bill Rosenblatt
(O'Reilly &amp; Assoc., 1991, ISBN: 0-937175-84-6). A good introduction
to emacs. </p>




<p><i>UNIX for the Impatient,</i> Paul W. Abrahams &amp; Bruce R.
Larson
(Addison-Wesley Publishing Company, 1992, ISBN 0-201-55703-7). Good,
clear coverage of the utilities, recommended for Unix beginners. </p>




<p><i>UNIX in a Nutshell: A Desktop Quick Reference for System V &amp;
Solaris 2.0</i> (O'Reilly &amp; Associates, Inc., 1992, ISBN
0-56592-001-5). A handy reference for SysV and Solaris 2. </p>




<p><i>When You Can't Find Your UNIX System Administrator</i>, Linda Mui
(O'Reilly &amp; Associates, Inc., 1995, ISBN 1-56592-104-6). The title
says it all. </p>




<p><i>UNIX Power Tools</i>, Jerry Peek, Tim O'Reilly, and Mike Loukides
(O'Reilly &amp; Associates, 1993, ISBN 0-679-79073-X). An excellent
compendium of tricks of the masters, written for beginners and
intermediates. Includes a CDROM of useful software. </p>




<p><i>Exploring the UNIX System</i>, Stephen G. Kochan &amp; Patrick H.
Wood (SAMS, a division of Macmillan Computer Publishing, 1989, ISBN
0-8104-6268-0).(OUT OF PRINT) </p>




<p><i>Learning GNU Emacs</i>, Debra Cameron and Bill Rosenblatt
(O'Reilly &amp; Associates, 1992, ISBN 0-937175-84-6). </p>




<p><i>Unix Shell Programming</i>, Stephen G. Kochan &amp; Patrick H.
Wood (Hayden Book Co., 1990, ISBN 0-8104-6309-1). The classic on shell
programming. The third edition is available at <a href="http://www.amazon.com/exec/obidos/ASIN/0672324903/qid=1117136703/sr=2-3/ref=p%0Ad_bbs_b_2_3/104-8112295-9741502">amazon</a></p>




<p><i>The Unix C Shell Field Guide</i>, Gail Anderson and Paul Anderson
(Prentice Hall, 1986, ISBN 0-13-937468-X). </p>




<p><i>A Student's Guide to UNIX</i>, Harley Hahn. (McGraw-Hill, 1993,
ISBN 0-07-025511-3). This, and its almost identical sister, Open
Computing's Unix Unbound (same author and publisher), is an excellent
aid for beginners. Hahn's wry humor runs throughout. </p>




<p><i>Tricks of the UNIX Masters</i>, Russell G. Sage (Howard W. Sams
&amp; Co., Inc., 1987, ISBN 0-672-22449-6). </p>




<p><i>Unix System V: A Practical Guide</i> , Mark Sobell
(Benjamin/Cummings, 1995, ISBN 0805375678) (A classic) </p>




<p><i>Unix Network Programming, Volume 1: Networking APIs: Sockets and
XTI</i> , Richard Stevens (Prentice Hall, 1998, ISBN 013490012X) The
definitive work on Unix Sockets </p>




<p><i>Unix Network Programming, Volume 2: Interprocess Communication</i>,
Richard Stevens(Prentice Hall, 1999, ISBN 0130810819) The definitive
work on IPC. </p>




<p><i>Applied Unix Programming, Volume 2</i> , Bharat Kurani<i> </i>(Prentice
Hall, 1997, ISBN 0133043460) The Unix C Library Reference Manual,
includes C Library, math library, socket library, transport library,
and
internet library. </p>




<p><i>Advanced Programming in the Unix Environment</i> , Richard
Stevens
(Addison-Wesley, 1992, ISBN: 0201563177). A practical guide to the
theory of sockets and IPC on Unix. </p>




<p><i>The C Programming Language</i>, Brian Kernighan and Dennis
Ritchie (Prentice Hall, 1988, ISBN 0131103626). The definitive tutorial
on the C Programming Language. </p>




<p><i>Pointers on C</i>, Kenneth Reek (Addisson-Wesley, 1998, ISBN
0673999866). A good introduction to the C Programming Language. </p>




<p><i>C: A Reference Manual, Fourth Edition</i> , Harbinson and Steele
(Prentice Hall, 1995, ISBN 0133262243). A good reference manual for the
C langugage. </p>




<p><i>Absolute Beginner's Guide to C</i> , Greg Perry (Sams, 1994, ISBN
0672305100). One of the easiest avenues into C Programming in print. </p>




<p><i>Practical C Programming, Third Edition</i> , Steve Oualline
(O'Reilly, 1997, ISBN 1565923065). A good tutorial on C, and one of the
few that assumes you might be using GNU tools as opposed to
Microsoft's. </p>




<p><i>Design of the Unix Operating System</i> , Maurice Bach (Prentice
Hall, 1986, ISBN 0132017997). Perhaps the best general discussion of
the
details of the Unix Operating System. </p>




<p><i>Unix Internals: The New Frontiers</i> , Uresh Vahalia (Prentice
Hall, 1996, ISBN 0131019082). A newer discussion of the details of
Unix,
published 10 years after Bach's book. </p>




<p><i>Unix Internals: A Practical Approach</i> , Steve Pate
(Addison-Wesley, 1996, ISBN 020187721X). A good and readable discussion
of the details of the Unix kernel. </p>




<p><i>The Linux Kernel Book</i>, Card, et. al. (Wiley, 1998, ISBN
0471981419). A good book which concentrates on the particularities of
the Linux Kernel code itself. A gentle tour through the kernel's source
code. The book comes with a CD for RedHat 5.0, whose kernel's code is
examined throughout the book. <br>





</td>
</tr>
</table>



</body></html>
